const http = require('../request/request.js')
const cheerio = require('cheerio')
const pretty = require('pretty')

// 获取页面数据
function requestHomeHtml() {
    return new Promise(async (resolve, reject) => {
        try {
            let _html = await http.get('/')
            resolve(_html)
        } catch (err) {
            reject(err)
        }
    })
}

/**
 * @name getItemMovieInfo
 * @description 获取单个影视的信息
 * @param {} $ 选择器
 * @param {HTMLElement} i 单个影视li节点
 *
*/
function getItemMovieInfo ($,i){
    let movieObj = {}
    let item_path = $($(i).find('a')[0]).attr('href') // 跳转详情地址
    let item_title = $($(i).find('a')[0]).attr('title') // 剧名
    let item_cover = $($(i).find('a')[0]).find('img').attr('data-original') // 图片
    let item_actor = $($(i).find('a')[0]).find('.actor').first().text() // 导演
    let item_type = $($(i).find('a')[0]).find('.actor').eq(1).text() // 类型
    let item_date = $($(i).find('a')[0]).find('.actor').eq(2).text() // 时间 地点
    let item_other = $($(i).find('a')[0]).find('.other').text() // 类型 高清 完结
    movieObj = {item_path,item_title,item_cover,item_actor,item_type,item_date,item_other}
    return movieObj
}


/**
 * @name returnHitMovieArray()
 * @description 返回推荐影片的详细数组信息
 * @param {*} $ load加载的页面内容
 * @returns {Array<object>} hitArray 返回好剧列表
*/

function returnHitMovieArray ($){
    let hitArray = []
    $('.index-tj-l').find('ul').find('li').each((idx,i)=>{
        let hitObj = getItemMovieInfo($,i)
        hitArray.push(hitObj)
    })
    return hitArray
}

/**
 * @name getCateInfo
 * @description 获取首页当前类目下面的影视模块信息
 * @param {HTMLElement} className
 * @param {*} $
*/
function getCateInfo (className,$){
    let cateArray = []
    $(className).find('ul').find('li').each((idx,i)=>{
        let hitObj = getItemMovieInfo($,i)
        cateArray.push(hitObj)
    })
    return cateArray
}

// https://www.kanyk.net/videoType/dianying/

/**
 * @name getCateTitle
 * @description 获取页面的分类信息
 *
*/
function getCateTitle ($){
    let result = []

    $('.top-nav').find('li').each((idx,item) =>{
        let obj = {}
        obj['cate_href'] = $($(item)[0]).find('a').attr('href')
        obj['cate_title'] = $($(item)[0]).find('a').text()
        // 存在说明当前是多节点
        if (typeof $($(item)[0]).attr('_t_nav') !== 'undefined') {
            obj['child'] = []

            let id = $($(item)[0]).attr('_t_nav')
            $('.nav-down').find('#'+id).find('li').each((idx,li) => {
                let childObj = {}
                childObj['cate_href'] = $($(li)[0]).find('a').attr('href')
                childObj['cate_title'] = $($(li)[0]).find('a').text()
                obj.child.push(childObj)
            })
        }
        // console.log(obj)
        result.push(obj)
    })
    return result
}

// 获取首页信息路由
exports.requestHome = async function (req, res) {
    res.set('Cache-Control','max-age=86400')
    console.log('页面信息路由')
    try {
        let { data: home_html } = await requestHomeHtml() // 获取到的数据
        let $ = cheerio.load(home_html)
        let hit_array = returnHitMovieArray($)
        let film_array = getCateInfo($('.index-area')[0],$)
        let soap_opera_array = getCateInfo($('.index-area')[1],$)
        let anime_array = getCateInfo($('.index-area')[2],$)
        let variety_array = getCateInfo($('.index-area')[3],$)
        let cate_title_array = getCateTitle($)
        let colication = {
            hit_array, // 热推剧
            film_array, // 电影
            soap_opera_array, // 连续剧
            anime_array, // 动画
            variety_array //综艺
        }
        // console.log('---------------------------------------------',colication);
        res.send({
            code: 200,
            msg: '获取成功',
            data:{
                cate_title_array,
                colication
            }
        })
    } catch (err) {
        console.log('捕获到的错误',err);
        res.send({
            code: 100,
            msg: err
        })
    }
}
